package com.xc.xcrpc.server;

import io.vertx.core.Vertx;

/**
 * Vertx HTTP 服务器
 */
public class VertxHttpServer implements HttpServer {

    /**
     * 启动服务器
     *
     * @param port
     */
    public void doStart(int port) {
        // 创建 Vert.x 实例
        Vertx vertx = Vertx.vertx();

        // 创建 HTTP 服务器
        io.vertx.core.http.HttpServer server = vertx.createHttpServer();

        // 监听端口并处理请求
        /**
         * 24/9/23
         * 这里只是监听请求，刚开始加载时好像不会调用这个HttpServerHandler里的handle方法，得等到有请求，
         *
         * todo 问题一
         * 还有就是这样为什么要等consumer服务调用再加载 ，那这个请求哪来的，consumer服务的请求不得把代理对象创建出来才能发吗
         * 为什么两个服务都到创建动态代理对象的时候是provider服务先创建
         */
        server.requestHandler(new HttpServerHandler());

        // 启动 HTTP 服务器并监听指定端口
        server.listen(port, result -> {
            if (result.succeeded()) {
                System.out.println("Server is now listening on port " + port);
            } else {
                System.err.println("Failed to start server: " + result.cause());
            }
        });
    }
}
